package web;

import java.io.IOException;
import java.util.List;
import java.util.Vector;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.*;



import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.StaxDriver;

import vo.CCSolicitudCotizacionOperadorVO;
import vo.ClienteVO;

import vo.CCSolicitudCotizacionVO;
import facade.BusinessDelegateBean;

import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;


public class ServletCotizacion extends HttpServlet implements
		javax.servlet.Servlet {
	private static final long serialVersionUID = 1L;
	private int cant;
	private Vector<CCSolicitudCotizacionVO> rodamientosCotizar= new Vector<CCSolicitudCotizacionVO>();
	
	private boolean inicializado = false;//flag

	public ServletCotizacion() {
		super();
		this.cant=1;
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		HttpSession session = request.getSession(true);
		String action = (String) request.getParameter("action");
		
		if (action.equals("Agregar Item Cotizacion")) {
			System.out.println("entre al agregar item de cotizacion del servlet");
			try {
				CCSolicitudCotizacionVO cotizacionVO = new CCSolicitudCotizacionVO();
				//si este no es el primer elemento
				System.out.println(this.inicializado);
				if (this.inicializado == true) {
					this.rodamientosCotizar = (Vector<CCSolicitudCotizacionVO>) session.getAttribute("cotizacion");
					System.out.println("me traigo el vector del carrito de cotizaciones ya agregadas. size: "+this.rodamientosCotizar.size());
				}
				else{
					System.out.println("creo un nuevo vector");
					this.rodamientosCotizar =new Vector<CCSolicitudCotizacionVO>();
					this.inicializado=true;
				}
					
					//cotizacionVO.setCantidad(Integer.parseInt(request.getParameter("cantRod")));
					cotizacionVO.setCantidad(1); //BORRAR
					cotizacionVO.setSKF(request.getParameter("codigoRod"));
					cotizacionVO.setMarca(request.getParameter("marcaRod"));
					cotizacionVO.setPais(request.getParameter("paisRod"));
					cotizacionVO.setIdPedidoCotizacion(cant);
					cotizacionVO.setIdODV(1);
					this.cant++;
					
					//Imprimo en pantalla los valores
					System.out.println("Cant: "+cotizacionVO.getCantidad());
					System.out.println("Codigo: "+cotizacionVO.getSKF());
					System.out.println("Marca: "+cotizacionVO.getMarca());
					this.rodamientosCotizar.addElement(cotizacionVO);
					
					
					session.setAttribute("cotizacion", rodamientosCotizar);
					System.out.println(this.inicializado);
					//redireccionamiento
					RequestDispatcher dispatcher = request.getRequestDispatcher("/solicitudCotizacion.jsp");
					dispatcher.forward(request, response);
			}

			catch (NumberFormatException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		if (action.equals("Enviar")) {
			try {
				
				this.rodamientosCotizar = (Vector<CCSolicitudCotizacionVO>) session.getAttribute("cotizacion");
				
				CCSolicitudCotizacionOperadorVO root= new CCSolicitudCotizacionOperadorVO();
				ClienteVO cVO=new ClienteVO();
				cVO.setId(Integer.valueOf(request.getParameter("idCliente")));
				root.setItems(this.rodamientosCotizar);
				rodamientosCotizar= new Vector<CCSolicitudCotizacionVO>();
				this.inicializado=false;
				root.setCliente(cVO);
				System.out.println(cVO.getId());
				
				session.removeAttribute("cotizacion");
				System.out.println("remove attributes");
				System.out.println(" size del vector antes de enviar: "+root.getItems().size());
				//XStream xstream = new XStream(new StaxDriver()); // does not require XPP3 library starting with Java 6
				//xstream.alias("CCSolicitudCotizacionParentVO", CCSolicitudCotizacionParentVO.class);
				
				//String xml = xstream.toXML(root);
				//System.out.println(xml);
				
				//session.setAttribute("xml", xml);
				//redireccionamiento
				
				BusinessDelegateBean bd=new BusinessDelegateBean();
				session.setAttribute("rtaCotizacion", bd.cotizarRodamientos(root));
				//session.setAttribute("rtaCotizacion",new String("SAadsa"));
				
				RequestDispatcher dispatcher = request.getRequestDispatcher("/solicitudCotizacion.jsp");
				dispatcher.forward(request, response);
				
				
			} catch (NumberFormatException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}

		}

	}

}
